#include <unistd.h>
#include <sys/syscall.h>

#include "./CurrentThread.h"

namespace CurrentThread
{
    // __thread int t_cachedTid = 0;
    thread_local int cacheTid{0};

    void getCacheTid()
    {
        if (cacheTid == 0)
        {
            // 注意：
            // pthread_self()不是系统命令top显示的tid，是用户级线程id
            // std::this_thread::get_id()用户级线程id
            // linux系统调用内核级线程id
            cacheTid = static_cast<pid_t>(::syscall(SYS_gettid));
        }
    }
}